package com.kfdx.dc.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kfdx.dc.common.utils.DateUtils;
import com.kfdx.dc.common.utils.SecurityUtils;
import com.kfdx.dc.system.config.file.TeaLocalUploadProperties;
import com.kfdx.dc.system.domain.SysFileEntity;
import com.kfdx.dc.system.mapper.SysFileMapper;
import com.kfdx.dc.system.service.ISysFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 文件信息Service业务层处理
 *
 * @author ruoyi
 * @date 2022-04-15
 */
@Service
public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFileEntity> implements ISysFileService {

    @Autowired
    TeaLocalUploadProperties properties;
    /**
     * 查询文件信息
     *
     * @param fileId 文件信息ID
     * @return 文件信息
     */
    @Override
    public SysFileEntity selectSysFileById(Long fileId) {
        return fillDetail(baseMapper.selectById(fileId));
    }
    public SysFileEntity fillDetail(SysFileEntity sysFileEntity){
        if (sysFileEntity != null) {
            sysFileEntity.setVisitUrl(properties.getVisitAddress() + sysFileEntity.getAttachementPath());
        }
        return sysFileEntity;

    }

    /**
     * 查询文件信息列表
     *
     * @param sysFileEntity 文件信息
     * @return 文件信息
     */
    @Override
    public List<SysFileEntity> selectSysFileList(SysFileEntity sysFileEntity) {
        return baseMapper.selectSysFileList(sysFileEntity);
    }

    /**
     * 新增文件信息
     *
     * @param sysFileEntity 文件信息
     * @return 结果
     */
    @Transactional
    @Override
    public int insertSysFile(SysFileEntity sysFileEntity) {
        sysFileEntity.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
        sysFileEntity.setCreateTime(new Date());
        return baseMapper.insert(sysFileEntity);
    }

    /**
     * 修改文件信息
     *
     * @param sysFileEntity 文件信息
     * @return 结果
     */
    @Transactional

    @Override
    public int updateSysFile(SysFileEntity sysFileEntity) {
        sysFileEntity.setUpdateTime(DateUtils.getNowDate());
        sysFileEntity.setUpdateBy(SecurityUtils.getLoginUser().getUser().getUserName());
        sysFileEntity.setUpdateTime(new Date());
        return baseMapper.updateById(sysFileEntity);
    }

    /**
     * 批量删除文件信息
     *
     * @param fileIds 需要删除的文件信息ID
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSysFileByIds(Long[] fileIds) {
        return baseMapper.deleteBatchIds(Arrays.asList(fileIds));
    }

    /**
     * 删除文件信息信息
     *
     * @param fileId 文件信息ID
     * @return 结果
     */
    @Override
    public int deleteSysFileById(Long fileId) {
        return baseMapper.deleteById(fileId);
    }

    @Override
    public int insertSysFileNew(SysFileEntity saveObj) {
        saveObj.setCreateTime(new Date());
        return baseMapper.insert(saveObj);
    }


}
